/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.cvut.fel.taskpro.view.controller;

import cz.cvut.fel.taskpro.business.imanager.ISubjectBusiness;
import cz.cvut.fel.taskpro.data.entity.Kantor;
import cz.cvut.fel.taskpro.data.entity.GroupTaskPro;
import cz.cvut.fel.taskpro.data.entity.Subject;
import cz.cvut.fel.taskpro.data.entity.Student;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
 
/**
 *
 * @author Lurtz Beana vloužící pro výpis dat z databáze do stromu. Vytvoří
 * strom s úrovněmi: - 1.úroveň - předmety - 2.úroveň - paralelky - 3.úroveň -
 * kantoři a studenti - 4.úroveň - jmena kantorů nebo studentů
 */
@ManagedBean(name = "treeSubjectBean")
@RequestScoped
public class TreeSubjectBean implements Serializable {

    private TreeNode root;
    @EJB
    private ISubjectBusiness predmetB;

    @PostConstruct
    public void init() {
    }

    public TreeSubjectBean() {
    }

    /**
     *
     * Funkce nejprv načte data z databáze a poté data přiřadí do jednotlivých
     * úrovní.
     *
     * @return String se jmenem své stránky.
     */
    public String loadTreeSubject() {
        root = new DefaultTreeNode("Root", null);
        List<Subject> predmety = predmetB.showSubjects();
        List<GroupTaskPro> paralelka;
        List<Student> studenti;
       Kantor kantor;
        for (int i = 0; i < predmety.size(); i++) {
            final Subject currentPredmet = predmety.get(i);
            TreeNode node0 = new DefaultTreeNode(currentPredmet.getCode(), root);
            paralelka = currentPredmet.getmGroups();

            for (int j = 0; j < paralelka.size(); j++) {
                TreeNode node00 = new DefaultTreeNode(paralelka.get(j).getCode(), node0);
                kantor = paralelka.get(j).getKantor();

                TreeNode node000 = new DefaultTreeNode("Kantor", node00);
                
                    TreeNode node0000 = new DefaultTreeNode(kantor.getName() + " " + kantor.getSurname(), node000);
                

                studenti = paralelka.get(j).getMStudents();
                TreeNode node001 = new DefaultTreeNode("Student", node00);
                for (int k = 0; k < studenti.size(); k++) {
                    TreeNode node0001 = new DefaultTreeNode(studenti.get(k).getName() + " " + studenti.get(k).getSurname(), node001);
                }
            }
        }
        return "checkAllSubjectAdmin";
    }

    public TreeNode getRoot() {
        return root;
    }

    public void setRoot(TreeNode root) {
        this.root = root;
    }
}
